﻿using PersistenceLayer.DAL;
using SupportLayer.Constantes.OUTROS;
using SupportLayer.Objetos.Usuario;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace ByBikeShop.Administracao
{
	public abstract class BaseAdmin : System.Web.UI.Page
	{
		public PersistenceLayer.Model.Usuario Usuario = new PersistenceLayer.Model.Usuario();

		public void PageLoad(bool hasGrid = false)
		{
			CarregaUsuario();
			CarregaDados();

			if (hasGrid)
			{
				CarregaGrid();
				PopulaGrid();
			}
		}

		private void CarregaUsuario()
		{
			if ((Session[OUTROS.USUARIO] == null) || (Session[OUTROS.USUARIO].ToString() == string.Empty))
				if (Util.Cookies.RecuperaCookie(OUTROS.USUARIO, Request) == string.Empty)
					Response.Redirect("Login.aspx");
				else
					Usuario = new UsuarioDAL().Obter(Convert.ToInt32(Util.Cookies.RecuperaCookie(OUTROS.USUARIO, Request)));
			//Usuario = new Usuario().SelectUsuario(Convert.ToInt32(Util.Cookies.RecuperaCookie(OUTROS.USUARIO, Request)));
			else
				Usuario = new UsuarioDAL().Obter(Convert.ToInt32((Session[OUTROS.USUARIO])));
		}

		public abstract void CarregaDados();
		public abstract void CarregaGrid();
		public abstract void PopulaGrid();

		public void RedirectProdutos(string filtertype = "", int page = 1, string filter = "", int ordenacao = 1)
		{
			if (filtertype.Equals(string.Empty))
			{
				if (filter.Equals(string.Empty))
					Response.Redirect("/Administracao/Pages/Produtos.aspx?" + OUTROS.PAGINA.ToString() + "=" + page +
						"&" + OUTROS.ORDENACAO + "=" + ordenacao);
			}
			else
				Response.Redirect("/Administracao/Pages/Produtos.aspx?" + OUTROS.PAGINA.ToString() + "=" + page +
					"&" + OUTROS.FILTRO + "=" + filter + "&filtertype=" + filtertype + "&" + OUTROS.ORDENACAO + "=" + ordenacao);
		}

		public void RedirectDestaques(string filtertype = "", int page = 1, string filter = "", int ordenacao = 1)
		{
			if (filtertype.Equals(string.Empty))
			{
				if (filter.Equals(string.Empty))
					Response.Redirect("/Administracao/Pages/AdicionarDestaque.aspx?" + OUTROS.PAGINA.ToString() + "=" + page +
						"&" + OUTROS.ORDENACAO + "=" + ordenacao);
			}
			else
				Response.Redirect("/Administracao/Pages/AdicionarDestaque.aspx?" + OUTROS.PAGINA.ToString() + "=" + page +
					"&" + OUTROS.FILTRO + "=" + filter + "&filtertype=" + filtertype + "&" + OUTROS.ORDENACAO + "=" + ordenacao);
		}

	}
}